package com.cykj.pos.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cykj.pos.domain.BizCrownSpecial;
import com.cykj.pos.domain.BizMerchBill;
import com.cykj.pos.domain.BizShareDetail;
import com.cykj.pos.profit.dto.ShareDetailDTO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 分润明细Service
 */
public interface IBizShareDetailService extends IService<BizShareDetail> {

    // 查询自身交易信息
    BizShareDetail queryOwnDealInfo(ShareDetailDTO shareDetailDTO);

    // 查询下级交易信息
    BizShareDetail queryParentDealInfo(ShareDetailDTO shareDetailDTO);

    // 查询下级的所有merch_id
    List<ShareDetailDTO> queryParentMerchId(ShareDetailDTO shareDetailDTO);

    // 查询下级的交易量 分开
    BizShareDetail queryParentDealSum(ShareDetailDTO shareDetailDTO);

    // 查出交易总额
    BigDecimal queryTransAmount(ShareDetailDTO shareDetailDTO);

    // 查出下线伙伴 总交易额
    BigDecimal queryParentAllDealSum(ShareDetailDTO shareDetailDTO);

    // 查询所有合作伙伴的信息
    List<ShareDetailDTO> queryMerchantInfo();

    // 存入生成的分润信息
    void saveShareDetail(BizShareDetail bizShareDetail);

    // 通过parent_id 去查上机名字
    ShareDetailDTO queryParentName(Long parentId);

    // 通过orderId查询所有orderId
    List<BizShareDetail> queryAllShareByOrderId(String orderId);

    // 更改分润账单状态
    String updateCheckStatus(BizShareDetail bizShareDetail);

    // 查找每个线下刷卡交易总量
    BizShareDetail queryParentDealSlotCard(ShareDetailDTO shareDetailDTO);

    // 通过账单查找分润信息
    BizShareDetail queryBillTypeTwo(BizMerchBill bizMerchBill);

    List<BizCrownSpecial> querySpecialCrown();

    // 改特殊皇冠奖励的名字
    void updateCrownSpecial(BizCrownSpecial bizCrownSpecial);

    /**
     * 计算最终分润
     * @param orderId
     * @return
     */
    boolean calcFinalShare(String orderId);
}
